Graphical user interface for localizing a computer program using context data captured from the computer program

ABSTRACT

Outputs from a graphical user interface of a target computer program are captured during actual use of the target computer program. The captured outputs are processed to recognize strings and associate those strings with content derived from the outputs. The recognized strings and associated content are stored as context data. A translation editing tool accesses the context data and message data of the target computer program. The translation editing tool presents the message data through a graphical user interface to a user. In response to selected text from the message data, the context data are accessed to retrieve content associated with a recognized string that matches the selected text. The retrieved content is presented in the graphical user interface of the translation editing tool to provide contextual information to inform how to translate a message. Text input from the translator can be stored in the message data.

BACKGROUND

Computer programs generally include a graphical user interface throughwhich a computer communicates both state information and prompts forinput. To the extent that this communication is in the form of a naturallanguage, such as English, a computer program typically is “localized”to make the computer program accessible in multiple natural languages.In other words, possible outputs generated by the computer program arestored as translations in multiple natural languages. To supportlocalization, a computer program generally is written so that outputsare defined by an identifier of a message and an identifier of thenatural language of the output. The computer program then includes adata structure that stores, for each message identifier, thecorresponding message in each of several natural languages.

As an example, a common exercise in an introduction to computerprogramming is to write a computer program that outputs the text “Hello,world”. Such a computer program typically would include an instructionthat included a command, such as “output:”, and the phrase “Hello,world”, i.e., “output: ‘Hello, world’”. (Note this example does not usean actual computer programming language). To localize this computerprogram, one could write instead “output: message[x, y]”, where“message” is a command that returns a message using an identifier “x” ofthe desired message as an index in a data structure, and where “y”corresponds to a selected natural language. For example, message “1” canrepresent a message corresponding to the desired “Hello, world” output.Other values can represent other messages of the computer program. Inthis example, for “y”, let English be “1” and let French be “2”. A datastructure is created to store “Hello, world” as message[1,1] and“Bonjour, le monde” as message [1,2].

In practice, the localization of a computer program into a large numberof natural languages typically is performed by a team of translators,not a computer programmer. The computer programmer, or a team ofprogrammers, typically provides the initial content for messages of acomputer program in one natural language. Then, the data structureswhich store these messages are provided to translators. The translatorsoften use a computer program that accesses these data structures andupdates the data structures with translations input by the translators.The computer program typically presents messages from these datastructures through a graphical user interface to a translator, andreceives input from the translator providing translations for themessages. The translations then are stored in the data structure.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is intended neither to identify key oressential features, nor to limit the scope, of the claimed subjectmatter.

One challenge for translators, when localizing software, is providingaccurate translations for idiomatic expressions, words with multiplemeanings, and other ambiguous terms and phrases. For example, if amessage in a computer game includes the English word “block”, atranslator would need to determine whether the word was intended tosignify, for example, a defensive action of a person fighting, or, anobject, such as a building component. To address such challenges,contextual information from a computer program being localized isprovided to the translator to help the translator to resolve ambiguitiesin translation. Herein, the computer program being localized is calledthe target computer program.

Context data from the target computer program is generated by processingoutputs presented by the graphical user interface during actual use ofthe computer program and which are captured during that use. Thecaptured outputs are processed to create the context data. Generally,the context data associates strings, that can be matched to selectedtext of messages from the graphical user interface of the targetcomputer program, with other content, such as images or audio, thatprovide context from the graphical user interface of the target computerprogram. In an example implementation, the context data can be in theform of strings, recognized from images or audio of the graphical userinterface of the target computer program captured during actual use ofthe target computer program, and associations between the strings andthe images which are associated with the recognized strings.

A translation editing tool has, as one of its inputs, access to thiscontext data. The translation editing tool also has, as another of itsinputs, access to message data of the target computer program to betranslated. The message data includes messages, in a first naturallanguage, of the graphical user interface of the target computerprogram. The translation editing tool presents messages to be translatedfrom the message data through a graphical user interface to a user. Inresponse to selected text of a message, the translation editing toolaccesses the context data to retrieve content derived from the graphicaluser interface of the target computer program and associated with arecognized string that matches the selected text. The retrieved contentis presented to the translator through a graphical user interface of thetranslation editing tool in association with the selected text. Givensuch a presentation, a translator has contextual information to informhow to translate a message into a second natural language. Text based oninput from the translator, in the second natural language, can be storedin the message data.

The computer system includes a capture tool that runs on a firstcomputer running a target computer program. The target computer programhas message data, including messages, in a first natural language, ofthe graphical user interface of the target computer program. The targetcomputer program provides one or more outputs, such as display data at arefresh rate, for its graphical user interface. Other outputs caninclude audio data, for example. The capture tool accesses the outputs,such as the display data, of the target computer program and stores theaccessed outputs in an output file herein called a capture file.

The computer system also includes an analysis tool that runs on a secondcomputer and receives the capture file from the capture tool as aninput. The analysis tool processes the capture file to extract contextdata. For example, the analysis tool can process images to recognizestrings in the images. In this example, the analysis tool stores dataassociating the recognized strings with those images as the contextdata.

The computer system also includes a translation editing tool that runson a third computer and receives, as a first input, the context datagenerated from use of the target computer program and receives, as asecond input, the message data of the target computer program. Thetranslation editing tool, in response to translator input, updates themessage data with translations of the messages of the target computerprogram.

An example workflow using such a computer system includes having a firstuser use the target computer program on the first computer. The capturetool runs during this use and captures data, such as display data,output by the target computer program. After the capture file is createdby the capture tool, the capture file is transmitted to the secondcomputer. The analysis tool is run on the second computer to process thecapture file and generate the context data. The context data and themessage data for the target computer program are transmitted to thethird computer. The translation editing tool is run on the thirdcomputer using the context data and the message data for the targetcomputer program.

The capture file can be encrypted and the analysis tool can beconfigured to require authentication before the contents of the capturefile can be accessed. The context data and/or message data also can beencrypted, and the translation editing tool can be configured to requireauthentication before that data can be accessed through the translationediting tool.

In the following description, reference is made to the accompanyingdrawings which form a part hereof, and in which are shown, by way ofillustration, specific example implementations. Other implementationsmay be made without departing from the scope of the disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example computer system configured tosupport localization of a target computer program.

FIG. 2 is a data flow diagram of an example computer system configuredto support localization of a target computer program.

FIG. 3 is a flow chart illustrating an example of operation of thecomputer system of FIG. 2.

FIG. 4 is a diagram of an illustrative example of a data structure formessage data of a target computer program.

FIG. 5 is a diagram of an illustrative example of a data structure forcontext data including strings recognized from images of a graphicaluser interface of the target computer program.

FIG. 6 is a flow chart describing an example of operation of a capturetool.

FIG. 7 is a data flow diagram of an example implementation of ananalysis tool.

FIG. 8A is a flow chart describing an example of operation of theanalysis tool in FIG. 7.

FIG. 8B is an illustrative example of graphical user interface imagesfrom a target computer program, with multiple lines of text.

FIG. 9 is a data flow diagram of an example implementation of atranslation editing tool.

FIG. 10 is an illustration of an example graphical user interface for atranslation editing tool illustrating an image displayed in associationwith text.

FIG. 11 is a flow chart describing an example of operation of thetranslation editing tool.

FIG. 12 is a block diagram of an example computer.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an example computer system configured tosupport localization of a target computer program.

This example computer system includes a first computer 100 running atarget computer program 104. The first computer also runs a capture tool102. The first computer can be implemented using a general purposecomputer such as described below in connection with FIG. 12. Examples ofsuch a computer include, but are not limited to, a tablet computer, aslate computer, a notebook computer, a desktop computer, a virtualdesktop computer hosted on a server computer, a handheld computer, and amobile phone including a computer and applications. The system caninclude a plurality of such first computers 100, to capture data fromusage of the target computer program by multiple users, and to capturedata from usage of multiple different target computer programs. Thefirst computer typically is used by a first user who uses the targetcomputer program, typically to ensure that the target computer programenters desired states of its graphical user interface. The first user,for example, can configure the first computer to run the capture tooland then run the target computer program.

The target computer program can be any computer program that can beexecuted on the first computer. Typical examples of such target computerprograms include, but are not limited to, computer games, productivityapplications such as word processing, spreadsheet, presentation, drawingand other end user applications, operating systems, or any othercomputer program.

The capture tool captures outputs, such as display data, for thegraphical user interface of the target computer program during executionof the target computer program during actual use of the target computerprogram by a user. The capture tool can be any computer program that canbe executed on the first computer, or connected to an output for apresentation device for the first computer, that can capture the outputdata of the graphical user interface of the target computer programduring execution of the target computer program. Other outputs inaddition to display data, such as audio data, also can be captured. Datacaptured by the capture tool can be stored, for example, in a data filein local storage of the first computer, and then transferred to a secondcomputer 110. As an example alternative, the capture tool can store acapture file directly to storage of the second computer. The term“capture file” as used herein is intended to mean any data structureused to store the output data captured from the use of the targetcomputer program.

The example computer system of FIG. 1 also includes a second computer110. The second computer runs an analysis tool 112, an example of whichis described in more detail below in connection with FIGS. 7, 8A and 8B.The analysis tool 112 generates context data from the capture file. Thesecond computer can be implemented using a general purpose computer suchas described below in connection with FIG. 12.

The analysis tool is a computer program that executes on the secondcomputer 110. In one example implementation described herein, theanalysis tool processes images stored in the capture file. In thisimplementation, the analysis tool can include an optical characterrecognition (OCR) component such as an OCR software development kitavailable from many software publishers, such as, but not limited to:Microsoft Corporation (the MICROSOFT OCR Library for Windows Runtime, oran OCR library that is part of the Windows SDK as Universal WindowsPlatform (UWP) API), ABBYY (the ABBYY Cloud OCR SDK), Aquaforest Ltd.(the AQUAFOREST OCR SDK), Nuance Communications, Inc. (the OMNIPAGEcapture SDK) and Lead Technologies, Inc. (the LEADTOOLS OCR SDK). TheOCR component can be on another computer and accessible by the secondcomputer over a computer network or can reside on the second computer.

In another example implementation, the analysis tool processes audiostored in the capture file. This implementation can be an alternativeto, or in addition to, processing of images stored in the capture file.In this implementation, the analysis tool can include a speechrecognition component, such as a speech recognition software developmentkit (SDK) available from many software publishers, such as, but notlimited to: Microsoft Corporation (the MICROSOFT Speech Platform SDK),Nuance Communications, Inc. (the DRAGON SDK), SRI International (theEDUSPEAK and DYNASPEAK SDK's), and others.

FIG. 1 also illustrates the second computer connected to the firstcomputer through a computer network 130 for transmitting the capturefile created by the capture tool to the second computer. The computernetwork 130 can be a publicly accessible network, such as the internet,or a private computer network. The capture file created by the capturetool also can be transferred from the first computer to the secondcomputer through removable storage or through other data transmissiontechniques that do not include a computer network.

The computer system also includes a third computer 120. The thirdcomputer runs translation editing tool 122, described in more detailbelow in connection with FIGS. 9 to 11. The third computer can beimplemented using a general purpose computer such as described below inconnection with FIG. 12. Examples of such a computer include, but arenot limited to, a tablet computer, a slate computer, a notebookcomputer, a desktop computer, a virtual desktop computer hosted on aserver computer, a handheld computer, and a mobile phone including acomputer and applications. FIG. 1 illustrates the third computerconnected to the second computer over a computer network 140 fortransmitting context data generated by the analysis tool from the secondcomputer to the third computer. The computer network 140 can be apublicly accessible network, such as the internet, or a private computernetwork. The context data also can be transferred from the secondcomputer to the third computer through removable storage or throughother data transmission techniques that do not include a computernetwork.

The computer networks 130, 140 can be any computer network supportinginteraction between the end user computers and the shared storagesystem, such as a local area network or a wide area network, whetherprivate and/or publicly accessible, and can include wired and/orwireless connectivity. The computer network can be implemented using anyof a number of available network communication protocols, including butnot limited to Ethernet and TCP/IP.

In one example deployment, the second computer can include a pluralityof computers implementing one or more server computers and accessible bya plurality of first computers and a plurality of third computers. Suchone or more server computers can implement a service employing theanalysis tool to generate context data for multiple target computerprograms for use by multiple translation editing tools. In one exampledeployment, the second computer can be configured to allow the thirdcomputer to remotely access the context data for a target computerprogram without transferring all of the context data to third computer.

In one example deployment, the first and second computers can be thesame computer. In another example deployment, the second and thirdcomputers can be the same computer. In another example deployment, thefirst, second and third computers are the same computer.

Referring now to FIG. 2, a data flow diagram of an exampleimplementation of such a computer system will now be described.

The target computer program 200 has message data 202 including messagesfor the graphical user interface of the target computer program. Themessages generally include text strings in at least a first naturallanguage. The message data can be stored in the form of one or more datafiles. The target computer program has an output that provides outputdata 204, such as display data and/or audio, for its graphical userinterface. The output data 204 is presented on one or more presentationdevices 206, such as a display or speakers.

The capture tool 210 accesses the output data 204 from the targetcomputer program 200 and stores the accessed output data in a capturefile 212. For display data, the sample rate of images stored by thecapture tool can be equal to or less than a refresh rate of the displaydata from the target computer program. Any audio data can be recorded atan audio sample rate based on a device used for recording.

The analysis tool 220 receives the capture file 212 as an input. Theanalysis tool processes the capture file to generate context data 222,which is data derived from the graphical user interface of the targetcomputer program. For example, the analysis tool can recognize stringsin the captured data and associate the recognized strings with contentderived from the capture file. For example, strings can be recognized indisplay data using optical character recognition techniques. Strings canbe generated by recognizing speech in any recorded audio data. Suchstrings can be associated with images to which they correspond, e.g., animage from which the string was recognized, or an image displayed at atime corresponding to audio from which the string was recognized. Theanalysis tool outputs context data 222. In one example implementation,the context data can be stored in the form of a database file thatassociates recognized strings with other context data, such as an imageand a location in that image, providing a database of contextinformation.

The translation editing tool 230 receives the context data 222 as afirst input and the message data 202 of the target computer program as asecond input. A dashed line 234 indicates that a copy of the messagedata 202 of the target computer program is provided to the translationediting tool for modification. The translation editing tool has agraphical user interface through which output data 238 is presented to auser, e.g., a translator. The output data can include images from thecontext data 222 corresponding to strings matching text selected fromthe message data 232 by the translator. In response to user input 236 ofa translation, the translation editing tool updates the message data, asindicated by the updated message data 232, with translations of themessages of the target computer program based on user input. The updatedmessage data 232 can be combined with the target computer program toprovide a localized target computer program.

Referring now to FIG. 3, a flow chart of an example operation of such acomputer system will now be described.

The first computer, using the capture tool, captures 300 output datafrom a target computer program during actual use of the target computerprogram. The capture tool can store 302 the captured output data in adata file, herein called a capture file. The capture file is madeaccessible 304 to an analysis tool, for example by transferring thecapture file to a second computer that runs the analysis tool. Theanalysis tool then processes 306 the capture file to generate thecorresponding context data. In turn the context data is made accessible308 to the translation editing tool. Similarly, the message data for thetarget computer program is made accessible to the translation editingtool. For example, the context data and message data can be packagedinto an encrypted data file that is transferred to the computer thatruns the translation editing tool. The translation editing tool, duringuse in editing translations of the message data of the target computerprogram, presents 310 content from the context data in response to inputof selected text from the message data. The translation editing toolthen processes user input of translated messages to update 312 themessage data for the target computer program.

More details of an example implementation of such a computer system andits operation will be described below in connection with FIGS. 4-13.

FIG. 4 is an illustrative example of a data structure for storingmessage data for a localized target computer program. Such a datastructure can be stored in a data file. As an example, a target computerprogram may output messages of a graphical user interface in a selectednatural language by specifying a message file or message data structure,an identifier of the message and an identifier of the selected naturallanguage. For example, the expression of a form “message[x, y]” can be acommand that returns a message using an identifier “x” of the desiredmessage as an index in a data structure, and where an identifier “y”corresponds to a selected natural language. Accordingly, as shown inFIG. 4, message data 400 can include an identifier 402 of the targetcomputer program to which it corresponds. Data for a plurality ofmessages 404, indexed for example by message identifier 406, also arestored. For each message, content for the message in each of a pluralityof natural languages is stored, as indicated at 408 and 410. Forexample, message “1” can represent a message corresponding to thedesired “Hello, world” output. In this example, for “y”, let English be“1” and let French be “2”. The message data includes, and allowsretrieval of, “Hello, world” as message[1,1] and “Bonjour, le monde” asmessage[1,2]. Message data also can include other data 412, such asmetadata about its creation date, last modification date and otherinformation.

FIG. 5 is a diagram of an illustrative example of a data structure forcontext data. In this example, the context data maps strings recognizedfrom images of a graphical user interface of the target computer programto those images. The context data 500 can include an identifier 502 ofthe target computer program with which it is associated. Any additionaldata, such as a date and time of creation of the data file or otherinformation, can be stored in one or more additional data fields 514.

The strings recognized in images from the graphical user interface canbe represented as one or more records for recognized strings 504. Foreach recognized string (e.g., “hello world”), a record stores areference to an image ID 508, which is a unique identifier of the imagein which the recognized string is found, and coordinates 510.Coordinates 510 represent at least the location, such as x and ycoordinate values, where the recognized string 504 is found within theimage having the image ID 508. The coordinates 510 also can include sizeinformation for a bounding box in an image that includes the recognizedstring, such as a height and a width. Each recognized string can have aunique ID 506. For example, the unique ID can be programmaticallycalculated from the recognized string and the coordinates. In such way,the same string at the same coordinates cannot be added to this databasemultiple times. A number of characters 507 in the string can be stored.Additionally, a scale factor 509 applied to stored image data also canbe stored. While FIG. 5 shows a variable length array of recognizedstrings, a variety of implementations of a database file storing suchdata are available. In one example implementation, strings recognizedfrom audio can be associated with one or more images corresponding tothe audio. The recognized strings also can be associated with audiocontent, whether audio from which a string is recognized or audioassociated with an image from which the string is recognized. Any othercontent in the capture file that can be associated with data from whicha string is recognized also can be associated with that string.

The context data also can include image data 512, which can include theimage data from the capture file or can include a reference to aseparate data file storing the images, or to multiple image files thatstore the image data. Each image ID 508 associated with a recognizedstring 504 identifies an image stored in this image data. The image IDcan be a numerical identifier, or file name, or other informationrepresenting the image. In implementations where each image is stored asa separate image file, the image ID can be the image file name. Thecontext data also can include references to any corresponding audio dataor other data from, or derived from, the capture file.

The capture file containing output data captured from the targetcomputer program can be stored as a data file containing a sequence ofthe captured images. The data file can have the format of a conventionalvideo data file. As such, the data file also can store audio data as ina conventional video data file. Alternatively, audio data also can bestored in a separate data file.

The capture file can be encrypted and the analysis tool can beconfigured to require authentication before the contents of the capturefile can be accessed. The context data and/or message data also can beencrypted, and the translation editing tool can be configured to requireauthentication before this data can be accessed through the translationediting tool.

Turning now to FIG. 6, a flowchart describing an example implementationof an operation of the capture tool will now be described.

The capture tool can be implemented using any tool that can capture andstore data output by the target computer program running on a computerto a presentation device of the computer. For example, a screen captureapplication or a recording device connected to a display output of thecomputer running the target computer program can capture a sequence ofimages output by an application. A video camera also can record a videoof a display. As another example, an audio capture application or otherrecording device connected to an audio output of the computer cancapture audio data. A microphone also can record audio output by thecomputer.

Recording by the capture tool is activated 600. A user initiates 602 useof the target computer program, and uses 604 the target computer programfor a period of time. The start of the use of the target computer andthe start of recording can occur in any order. The use of the targetcomputer program should include one or more scenarios or states of thetarget computer program for which a translator will be completing atranslation. The capture tool can terminate 606 recording, in responseto any of a variety of events. For example, termination can occur aftera set period of time automatically, or can be in response to a userinstruction, or can be in response to termination of use of the targetcomputer program. After terminating recording, the capture fileincluding the captured output data can be made accessible 608 to theanalysis tool, for example by transferring the capture file to acomputer that runs the analysis tool.

Turning now to FIG. 7, a data flow diagram of an example implementationof the analysis tool will now be described. In this exampleimplementation, the capture file includes image data that is processedusing optical character recognition to identify strings in images.

The analysis tool includes a control module 700 which accesses a capturefile 702 for processing. In this example, the control module 700accesses selected images from the capture file 702, and provides animage identifier 704 for each individual image 706 from the capture filethat is selected for processing. Only a selection of frames, instead ofall of the frames, from the capture file can be processed. For example,a sampling of two frames per second can be used to select frames fromthe capture file. For some target computer programs which do not havefrequent updates in the graphical user interface, even fewer frames canbe selected for processing. Each image 706 is input to an opticalcharacter recognition (OCR) module 708 which processes the image toextract any strings 710 recognized in the image. A string is a data typeimplemented as a sequence of characters used in a written form of anatural language, and can include numbers and/or symbols, and can berepresented using a form of character encoding. The optical characterrecognition module 708 can receive external inputs 712, such as userinput or text from the message data of the target computer program, orother data, to assist in recognizing strings in an image. The recognizedstrings 710 can be output as one or more strings, with each stringcomprising one or more words, and may be associated with coordinatesindicating a position in the image at which the string is located. Anyconventional optical character recognition program that processes aninput image and generates one or more strings per image can be used forthis purpose. The recognized string 710 for an image, and the imageidentifier 704 for that image, are input to an output module 714. Theoutput module 714 generates and stores records 720 that associate dataabout recognized strings 718, such as the recognized string andcoordinates of each string, with an image identifier 704 for the imagein which the recognized string was found, in the context data 716.

FIG. 8A is a flowchart that describes operation of the exampleimplementation of the analysis module described in FIG. 7. The controlmodule selects 800 a next image from the capture file for processing.The control module generates 801 an image identifier for the selectedimage. The control module reads 802 the corresponding image into memoryfrom the capture file. The optical character recognition moduleprocesses 804 the image in the memory to recognize any strings in theimage. The optical character recognition module stores 806 the resultingrecognized strings, and the corresponding coordinates in the image, inmemory or in a data file in storage. The output module reads therecognized strings and coordinates from memory or storage and processes808 them to generate records in the context data, pairing eachrecognized string with the corresponding image identifier. The outputmodule stores 810 the resulting records in the context data. The processis repeated for each image selected from the capture file as indicatedat 812.

More particularly, each recognized string can have associated data, suchas, but not requiring or limited to, an image identifier of the image,coordinates of the string in the image, and a unique identifier. Theoutput module adds a record for each recognized string into the contextdata, such as one described in FIG. 5.

Usually, sequential images generated by the graphical user interface ofthe target computer program, as captured in the capture file, are verysimilar and contain many of the same strings in the same position.Various techniques can be used to avoid duplicate entries in the contextdata for the same recognized string. As an example, if having many ofthe same strings with same coordinates in the context data are notpreferred, the output module can compute a unique identifier from atleast the recognized string and its coordinates. The output module canensure that only one record is stored for each such unique identifier.

Images of the graphical user interface of the target computer programalso can consume a substantial amount of computer storage. To reducestorage requirements for the context data, the output module can apply ascale ratio, which can be a user setting or an automatic setting, andwhich can be adjustable per image. The scale ratio represents a desiredratio of the size of the original image from the capture file to thesize of its corresponding image in the context data. The output modulecan resize images from the capture file to smaller size images, in termsof pixel resolution, that are stored in the context data. The outputmodule also can apply data compression to further reduce the amount ofdata used to represent each image. The output module also can store anyinformation about the scale ratio and/or any compression format in thecontext data.

Each image can have multiple text areas. An OCR module may detect suchmultiple text areas as individual strings. For example, FIG. 8B showstwo examples of a target computer program's graphical user interfaces.User interface 851 has four strings: “Singleplayer”, “Multiplayer”,“Texture Packs” and “Options”. User interface 852 has one long stringrendered in four lines: “Wood is a very important resource.” is oneline; “Many things are made from it. Walk to” is a second line. Storingonly the individual recognized strings separately in the context datacan impact the quality of matching of the recognized strings to messagesin the message data for a target computer program when the context datais used by the translation editing tool.

To improve quality of matching in the translation editing tool, in oneimplementation, the output module, in addition to adding the individualstrings, adds combinations of concatenated neighboring strings to thecontext data. A variety of techniques can be used to generateconcatenations of strings, such as adding all possible combinations oftwo or more adjacent lines. Partial strings also may be used. By addingsuch combinations of strings to the context data, multiline stringmatching can be performed when the context data is used in thetranslation editing tool. As shown in FIG. 8B, in the example of 851,combinations such as “Singleplayer Multiplayer”, “Multiplayer TexturePacks”, . . . , “Multiplayer Texture Packs Options”, . . . ,“Singleplayer Multiplayer Texture Packs Options” can be stored in thecontext data. In the example of 852, a combination such as “Wood is avery important resource. Many things are made from it. Walk to”,combining the first two lines, can be stored in the context data. Notethat these examples are based on an English language source, in whichwhitespace is added between strings to concatenate the strings; butother languages may apply different methods to concatenate strings.

Turning now to FIGS. 9-11, and given context data derived for a targetcomputer program, operation of an example implementation of atranslation editing tool will now be described. In this example, thecontext data includes recognized strings associated with images fromwhich those strings were recognized. FIG. 9 is a data flow diagram of anexample implementation of a translation editing tool. The translationediting tool includes a graphical user interface module 900 thatgenerates output data 902 for a graphical user interface and processesrelated user input 904 from user input devices. An example graphicaluser interface is described in more detail below in connection with FIG.10. In general, the graphical user interface presents one or moremessages from the message data 906 for the target computer program, fromwhich the user can select one or more messages, or one or more wordswithin one or more messages. The translation editing tool also mayautomatically select and present messages or portions of messages fortranslation. A user can then input text for a corresponding translationfor the selected message through user input 904. To assist the user increating a translation, the selected words of the selected message, alsocalled the selected text, are transmitted in a request 910 to a contextaccess module 912. The context access module, in response to a request910, accesses the context data 914 for the target computer program. Thecontext access module compares the selected text to recognized stringsstored in the context data to identify one or more recognized stringsthat approximately match the selected text. For each identified stringin the context data, the context access module retrieves content 916corresponding to the identified strings, and provides that content tothe graphical user interface module. The graphical user interface module900 incorporates the retrieved content 916 into the output data 902 forthe graphical user interface.

To compare the selected text to the recognized strings stored in thedatabase, the context access module can apply any of a number of stringcomparison algorithms. For example, because an OCR module can introduceerrors in recognized strings, the string comparison algorithm can beimplemented so as to execute approximate, or “fuzzy”, matches. As anexample, the context data can be implemented using a database thatsupports full-text searching operations with query operators that can beapplied to strings. An approximate matching mechanism can be implementedwith query operators that find one or more substrings within a string.For example, a “near” operator can identify strings in which twosubstrings are near each other: the operation “TermA Near/N TermB” meansthat TermA and TermB are less than N+1 words apart from each other. Asanother example, a “match” operation can identify strings including asubstring: the operation [Match “Tokyo”] can retrieve records having thestring “Tokyo Station” or “Center of Tokyo”. Some systems use a wildcardoperator to provide a similar result. As an example, an SQLite databaseis a relational database that supports full-text search with a “Near”operator. In this example, an initial query on the context data, giventhe selected text, can retrieve a set of candidate entries. For example,if the selected text is a single word or other string, a “match” querycan be applied to the database to retrieve all entries that begin withor that contain the word or string. If the selected text includesmultiple words or strings, a “near” query can be built from the words ofthe selected text and applied to the database to retrieve all entriesthat contain the words in approximately the same order. Additionally,the candidate entries can be limited by the number of characters in therecognized string as compared to the number of characters in theselected text. For each of the candidate entries, a similarity ordistance metric between the recognized string of the entry and theselected text is calculated. A variety of other similarity or distancemetrics can be used. For example, any edit distance metric can be used.An example distance metric that can be used is a Levenshtein distancemetric. Approximate matches having a measure of distance or similarityover a given threshold can be selected and sorted based on this measureby the context access module, and presented in sorted order by thetranslation editing tool.

An illustrative example of an image of a graphical user interface for atranslation editing tool will now be described in connection with FIG.10. In this example, the graphical user interface presents imagesassociated with recognized strings that match selected text from messagedata for a target computer program. In the example in FIG. 10, theinterface is illustrated and described as includes several panes of thegraphical user interface which are non-overlapping and non-modal withthe other panes of the interface. Such information also can be conveyedusing other graphical user interface techniques. A modal dialog box, acall-out interface, overlapping windows, or pop-up window also areexamples of a kind of interface that can be used to convey message dataand/or content based on context data.

The graphical user interface 1000 includes a message data display area1002 for displaying message data from the target computer program. Inthis example, the message data is in the form of a structured data file,such as an XML file or spreadsheet, which can be readily transformedinto a display of rows 1012 and columns 1010. Thus the message datadisplay area includes multiple rows, one for each source message to betranslated. In each row, the message data display area includes, for agiven message, the word or words 1014 of the message in a first naturallanguage, the word or words for its corresponding translation 1016 intoa second natural language, and optionally other information 1018 relatedto the message. Such other information can include, but is not limitedto, message identification information (e.g., a file name for a datafile from which message data was retrieved, a message identifier), andstatus information related to the translation (e.g., has the messagebeen translated and/or has the translation been approved). Any row ofthe message data display area can be selected in response to user inputas a currently selected message; all of, or a portion of, the textwithin a currently selected message can be selected. The translationediting tool may automatically select a message or portion of a message.

The graphical user interface 1000 also can include an editing displayarea 1004 for allowing a user to enter a translation for a currentlyselected message. The editing display area 1004 can include, forexample, a source pane 1020 and a translation pane 1022. The source panecan display text in the source natural language for the currentlyselected message. The translation pane can be an input field throughwhich a user can enter text in the target natural language as thetranslation to be associated with the currently selected message.

The graphical user interface 1000 also includes a content display area1006 for presenting content received based on the context data. Forexample, content display area 1006 can display images resulting from asearch of the context data for a recognized string that approximatelymatches the selected text from the currently selected message. In thiscontent display area 106, an image can be displayed in an image pane1030. Using the coordinate data for the recognized string in the contextdata, the recognized string can be highlighted on the displayed image,for example by drawing a box around that text. Additional data about thedisplayed image can be displayed in a data pane 1032. In this exampleinterface, the data pane includes a search count indicator 1034 whichconveys to the user the number of matches to the currently selectedtext. For example, the search count indicator 1034 can include a totalnumber of images or screens, and an indicator of which image from thatset is currently being viewed. The recognized string corresponding tothe currently displayed image can be displayed at 1036. A confidenceindicator 1038 can be displayed as a value indicative of how well thecurrently selected text matches the recognized string corresponding tothe displayed image, which may be a function of the similarity ordistance metric used to identify this string as a match. The actual text1040 in the source natural language of the currently selected messagealso can be displayed in the data pane, adjacent to the recognizedstring, to assist the user in determining how well the currentlydisplayed image corresponds to the currently selected text.

Turning now to FIG. 11, a flowchart describes an illustrative example ofoperation of the translation editing tool. The graphical user interfacemodule receives 1100 the message data for the target computer program,and generates 1102 display data based on the message data. The graphicaluser interface module receives 1104 an input indicative of a selectionof a message, and optionally one or more words in the selected message,as selected text. In response to the selected text, the graphical userinterface module requests corresponding content from the context accessmodule. In response to the request, the context access module accesses1108 the context data to retrieve content corresponding to recognizedstrings that match the selected text, and provides this content to thegraphical user interface module. The graphical user interface modulethen generates 1110 output data with the retrieved content. Thegraphical user interface module also receives 1112 user input indicativeof translated text for a selected message. In response to user input,the graphical user interface module can store 1114 any text based on theinput as the translation for a selected message in the message data.

The translation editing tool also can have a mode of operation in whichan individual reviews and approves translations. Such a mode ofoperation is similar to the operation described in FIG. 11, however, thegraphical user interface module receives input indicative of whether anexisting translation for a selected message is approved. Such an inputcan be entered, for example, if one of the status information columns at1018 in FIG. 10 is an input field. A variety of user interfacemechanisms can be provided to allow for such an input. In response tosuch an input, the message data can be updated to indicate that atranslation is approved. The graphical user interface of FIG. 10 thuscan provide context information in the approval process.

Having now described an example implementation, FIG. 12 illustrates anexample of a computer with which such techniques can be implemented.This is only one example of a computer and is not intended to suggestany limitation as to the scope of use or functionality of such acomputer.

The computer can be any of a variety of general purpose or specialpurpose computing hardware configurations. Some examples of types ofcomputers that can be used include, but are not limited to, personalcomputers, game consoles, set top boxes, hand-held or laptop devices(for example, media players, notebook computers, tablet computers,cellular phones, personal data assistants, voice recorders), servercomputers, multiprocessor systems, microprocessor-based systems,programmable consumer electronics, networked personal computers,minicomputers, mainframe computers, and distributed computingenvironments that include any of the above types of computers ordevices, and the like.

With reference to FIG. 12, a computer 1200 includes at least oneprocessing unit 1202 and memory 1204. The computer can have multipleprocessing units 1202 and multiple devices implementing the memory 1204.A processing unit 1202 can include one or more processing cores (notshown) that operate independently of each other. Additionalco-processing units also can be present in the computer. The memory 1204may include volatile devices (such as dynamic random access memory(DRAM) or other random access memory device), and non-volatile devices(such as a read-only memory, flash memory, and the like) or somecombination of the two. Other storage, such as dedicated memory orregisters, also can be present in the one or more processors. Thecomputer 1200 can include additional storage, such as storage devices(whether removable or non-removable) including, but not limited to,magnetically-recorded or optically-recorded disks or tape. Suchadditional storage is illustrated in FIG. 12 by removable storage device1208 and non-removable storage device 1210. The various components inFIG. 12 are generally interconnected by an interconnection mechanism,such as one or more buses 1230.

A computer storage medium is any medium in which data can be stored inand retrieved from addressable physical storage locations by thecomputer. A computer storage medium thus can be a volatile ornonvolatile memory, or a removable or non-removable storage device.Memory 1204, removable storage 1208 and non-removable storage 1210 areall examples of computer storage media. Some examples of computerstorage media are RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other optically ormagneto-optically recorded storage device, magnetic cassettes, magnetictape, magnetic disk storage or other magnetic storage devices. Computerstorage media and communication media are mutually exclusive categoriesof media.

Computer 1200 may also include communications connection(s) 1212 thatallow the computer to communicate with other devices over acommunication medium. Communication media typically transmit computerprogram instructions, data structures, program modules or other dataover a wired or wireless substance by propagating a modulated datasignal such as a carrier wave or other transport mechanism over thesubstance. The term “modulated data signal” means a signal that has oneor more of its characteristics set or changed in such a manner as toencode information in the signal, thereby changing the configuration orstate of the receiving device of the signal. By way of example, and notlimitation, communication media includes wired media, such as metal orother electrically conductive wire that propagates electrical signals oroptical fibers that propagate optical signals, and wireless media, suchas any non-wired communication media that allows propagation of signals,such as acoustic, electromagnetic, electrical, optical, infrared, radiofrequency and other signals. Communications connections 1212 aredevices, such as a wired network interface, wireless network interface,radio frequency transceiver, e.g., WiFi 1270, cellular 1274, long termevolution (LTE) or Bluetooth 1272, etc., transceivers, navigationtransceivers, e.g., global positioning system (GPS) or Global NavigationSatellite System (GLONASS), etc., or other devices 1276 that interfacewith communication media to transmit data over and receive data from thecommunication media.

The computer 1200 may have various input device(s) 1214 such as apointer device, keyboard, touch-based input device, pen, camera,microphone, sensors, such as accelerometers, thermometers, light sensorsand the like, and so on. The computer 1200 may have various outputdevice(s) 1216 such as a display, speakers, and so on. Such devices arewell known in the art and need not be discussed at length here. Variousinput and output devices can implement a natural user interface (NUI),which is any interface technology that enables a user to interact with adevice in a “natural” manner, free from artificial constraints imposedby input devices such as mice, keyboards, remote controls, and the like.

Examples of NUI methods include those relying on speech recognition,touch and stylus recognition, gesture recognition both on screen andadjacent to the screen, air gestures, head and eye tracking, voice andspeech, vision, touch, gestures, and machine intelligence, and mayinclude the use of touch sensitive displays, voice and speechrecognition, intention and goal understanding, motion gesture detectionusing depth cameras (such as stereoscopic camera systems, infraredcamera systems, and other camera systems and combinations of these),motion gesture detection using accelerometers or gyroscopes, facialrecognition, three dimensional displays, head, eye, and gaze tracking,immersive augmented reality and virtual reality systems, all of whichprovide a more natural interface, as well as technologies for sensingbrain activity using electric field sensing electrodes (EEG and relatedmethods).

The various storage 1210, communication connections 1212, output devices1216 and input devices 1214 can be integrated within a housing with therest of the computer, or can be connected through various input/outputinterface devices on the computer, in which case the reference numbers1210, 1212, 1214 and 1216 can indicate either the interface forconnection to a device or the device itself as the case may be.

A computer generally includes an operating system, which is a computerprogram that manages access to the various resources of the computer byapplications. There may be multiple applications. The various resourcesinclude the memory, storage, input devices and output devices, such asdisplay devices and input devices as shown in FIG. 12.

The various modules, tools, or applications, and data structures andflowcharts of FIGS. 1-9 and 11, the graphical user interface in FIGS.10, as well as any operating system, file system and applications on acomputer in FIG. 12, can be implemented using one or more processingunits of one or more computers with one or more computer programsprocessed by the one or more processing units. A computer programincludes computer-executable instructions and/or computer-interpretedinstructions, such as program modules, which instructions are processedby one or more processing units in the computer. Generally, suchinstructions define routines, programs, objects, components, datastructures, and so on, that, when processed by a processing unit,instruct or configure the computer to perform operations on data, orconfigure the computer to implement various components, modules or datastructures.

Alternatively, or in addition, the functionality of one or more of thevarious components described herein can be performed, at least in part,by one or more hardware logic components. For example, and withoutlimitation, illustrative types of hardware logic components that can beused include Field-programmable Gate Arrays (FPGAs), Program-specificIntegrated Circuits (ASICs), Program-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc.

Accordingly, in one aspect, a computer comprises a graphical userinterface module executing on a processing unit of the computer andcomprising: a first input accessing message data from computer storageaccessible to the computer, the message data comprising datacorresponding to messages, in a first natural language, of a graphicaluser interface of a target computer program, an output providing outputdata, generated using at least the message data, for presentation on apresentation device, and a second input receiving user input. Thecomputer also comprises a context access module executing on aprocessing unit of the computer and operative, in response to selectedtext corresponding to a message in the message data, to access contextdata from computer storage accessible to the computer, wherein thecontext data comprises data derived from the graphical user interface ofthe target computer program, to retrieve content associated with astring that matches the selected text, and having an output providingthe retrieved content to the graphical user interface module. Thegraphical user interface module is operative, in response to receivingthe retrieved content, to generate the output data including theretrieved content in association with the selected text. The graphicaluser interface module is operative, in response to an input with respectto a selected message, to update data for the selected message in themessage data based on the input.

In another aspect, a computer-implemented process performed by acomputer program executing on a computer, comprises accessing messagedata from computer storage accessible to the computer, the message datacomprising messages, in a first natural language, of a graphical userinterface of a target computer program. An input indicative of selectedtext corresponding to a message in the message data is received. Contextdata is accessed from computer storage accessible to the computer,wherein the context data comprises data derived from the graphical userinterface of the target computer program, to retrieve content associatedwith a string that matches the selected text. Output data, including theretrieved content in association with the selected text, is generatedfor presentation on a presentation device. Input with respect to aselected message is received, and data for the selected message in themessage data is updated based on the input.

In another aspect, a computer includes means for accessing context data,derived from the graphical user interface of the target computerprogram, to retrieve content associated with a string that matches theselected text from messages data, and means for presenting the contextdata in association with the selected text. The computer can store textin the message data for a translation corresponding to the selectedtext.

In another aspect, a computer includes means for processing output datafrom a target computer program to generate context data, wherein thecontext data comprises data derived from output data of the targetcomputer program, including strings recognized from the output dataassociated with content derived from the output data.

In any of the foregoing aspects, the input with respect to a selectedmessage can be a translation, into a second natural language, of theselected message. The translation is stored in the message data as thetranslation in the second natural language of the selected message.

In any of the foregoing aspects, the input with respect to a selectedmessage can be an indication of approval of a translation, and dataindicative of the approval of the translation is stored in the messagedata.

In any of the foregoing aspects, the output data can include displaydata of the graphical user interface of the target computer program. Thedisplay data can be processed using optical character recognition torecognize strings in the display data.

In any of the foregoing aspects, the output data can include audio dataof the graphical user interface of the target computer program. Theaudio data can be processed using speech recognition to recognizestrings in the audio data.

In any of the foregoing aspects, the data derived from the graphicaluser interface of the target computer program can include strings,recognized from outputs of the graphical user interface of the targetcomputer program captured during actual use of the target computerprogram, and associations between the strings and images of thegraphical user interface of the target computer program captured duringthe actual use of the target computer program.

In any of the foregoing aspects, the display data can include an editingpane displaying the selected text corresponding to the message in themessage data and an image pane displaying images retrieved from thecontext data. A plurality of retrieved images can be displayedsequentially in the image pane.

In any of the foregoing aspects, the graphical user interface caninclude an indication of confidence of a match between selected text anda string corresponding to the retrieved content.

In any of the foregoing aspects, the context data can include, for arecognized string from an image, a location of the string in the image.When an image corresponding to a string that matches the selected textis displayed, a highlight of the string can be displayed in the image.

In any of the foregoing aspects, the context data can be stored as adatabase associating strings with content derived from the graphicaluser interface of the target computer program. The database can bestored for access using queries on recognized strings in a structuredquery language.

In any of the foregoing aspects, accessing context data includesmatching selected text to recognized strings in the context data. In oneimplementation, an edit distance metric is used to measure similaritybetween the selected text and recognized strings in the context data. Inone implementation, a set of candidate recognized strings is limited bystring length based on string length of the selected text.

In another aspect, an article of manufacture includes at least onecomputer storage medium, and computer program instructions stored on theat least one computer storage medium. The computer program instructions,when processed by a processing system of a computer, the processingsystem comprising one or more processing units and storage, configuresthe computer as set forth in any of the foregoing aspects and/orperforms a process as set forth in any of the foregoing aspects.

Any of the foregoing aspects may be embodied as a computer system, asany individual component of such a computer system, as a processperformed by such a computer system or any individual component of sucha computer system, or as an article of manufacture including computerstorage in which computer program instructions are stored and which,when processed by one or more computers, configure the one or morecomputers to provide such a computer system or any individual componentof such a computer system.

It should be understood that the subject matter defined in the appendedclaims is not necessarily limited to the specific implementationsdescribed above. The specific implementations described above aredisclosed as examples only.

What is claimed is:
 1. A computer comprising: a graphical user interfacemodule comprising computer program instructions executing on aprocessing unit of the computer and comprising: a first input accessingmessage data from computer storage accessible to the computer, themessage data comprising data corresponding to messages, in a firstnatural language, of a graphical user interface of a target computerprogram, an output providing output data, generated using at least themessage data, for presentation on a presentation device, and a secondinput receiving user input including data indicating selected textcorresponding to a message in the message data; and a context accessmodule comprising computer program instructions executing on theprocessing unit of the computer and, in response to receiving the dataindicating the selected text from the graphical user interface module,operative to: access context data from the computer storage accessibleto the computer, wherein the context data comprises data includingstrings derived from the graphical user interface of the target computerprogram, wherein the strings are recognized from outputs of thegraphical user interface of the target computer program captured duringactual use of the target computer program, and the data furtherincluding associations between the strings and images of the graphicaluser interface of the target computer program captured during the actualuse of the target computer program, and retrieve content associated witha string that matches the selected text, and having an output providingthe retrieved content to the graphical user interface module; whereinthe graphical user interface module is operative, in response toreceiving the retrieved content from the context access module, togenerate the output data on the output, the output data furtherincluding the retrieved content in association with the selected text;and wherein the graphical user interface module is operative, inresponse to an input with respect to a selected message, to update datafor the selected message in the message data based on the input.
 2. Thecomputer of claim 1, wherein the output data of the graphical userinterface module includes display data comprising an editing panedisplaying the selected text corresponding to the message in the messagedata and an image pane displaying images retrieved from the contextdata.
 3. The computer of claim 2, wherein the graphical user interfacemodule is operative to display a plurality of retrieved imagessequentially in the image pane.
 4. The computer of claim 1, wherein theoutput data of the graphical user interface module further includes anindication of confidence of a match between the selected text and thestring corresponding to the retrieved content.
 5. The computer of claim1, wherein the context data further includes, for a recognized stringfrom an image, a location of the string in the image.
 6. The computer ofclaim 5, wherein the retrieved content comprises an image correspondingto the string that matches the selected text, and wherein, when thegraphical user interface module displays the image, the output data fromthe graphical user interface module further includes a highlight of thestring in the image.
 7. An article of manufacture comprising: computerstorage, computer program instructions stored on the computer storageand defining a translation editing tool which, when processed by acomputer, cause the computer to perform functions, in which the computercomprising: a graphical user interface module comprising: a first inputconfigured to access message data from computer storage accessible tothe computer, the message data comprising data corresponding tomessages, in a first natural language, of a graphical user interface ofa target computer program, an output providing output data, generatedusing at least the message data, for presentation on a presentationdevice, and a second input configured to receive user input includingdata indicating selected text corresponding to a message in the messagedata; and a context access module, in response to receiving the dataindicating the selected text from the graphical user interface module,operative to: access context data from the computer storage accessibleto the computer, wherein the context data comprises data includingstrings derived from the graphical user interface of the target computerprogram, wherein the strings are recognized from outputs of thegraphical user interface of the target computer program captured duringactual use of the target computer program, and the data furtherincluding associations between the strings and images of the graphicaluser interface of the target computer program captured during the actualuse of the target computer program, and retrieve content associated witha string that matches the selected text and provide the retrievedcontent to the graphical user interface module; wherein the graphicaluser interface module is operative, in response to receiving theretrieved content from the context access module, to generate the outputdata on the output, the output data further including the retrievedcontent in association with the selected text; and wherein the graphicaluser interface module is operative, in response to an input with respectto a selected message, to update data for the selected message in themessage data based on the input.
 8. The article of manufacture of claim7, wherein the output data of the graphical user interface moduleincludes display data comprising an editing pane displaying the selectedtext corresponding to the message in the message data and an image panedisplaying images retrieved from the context data.
 9. The article ofmanufacture of claim 8, wherein the graphical user interface module isoperative to display a plurality of retrieved images sequentially in theimage pane.
 10. The article of manufacture of claim 7, wherein theoutput data of the graphical user interface module further includes anindication of confidence of a match between the selected text and thestring corresponding to the retrieved content.
 11. The article ofmanufacture of claim 7, wherein the context data further includes, for arecognized string from an image, a location of the string in the image.12. The article of manufacture of claim 11, wherein the retrievedcontent comprises an image corresponding to the string that matches theselected text, and wherein, when the graphical user interface moduledisplays the image, the output data from the graphical user interfacemodule further includes a highlight of the string in the image.
 13. Acomputer-implemented process performed by a computer program executingon a computer, comprising: accessing message data from computer storageaccessible to the computer, the message data comprising messages, in afirst natural language, of a graphical user interface of a targetcomputer program; receiving an input indicative of selected textcorresponding to a message in the message data; in response to receivingthe input indicative of the selected text, accessing context data fromthe computer storage accessible to the computer, wherein the contextdata comprises data including strings derived from the graphical userinterface of the target computer program, wherein the strings arerecognized from outputs of the graphical user interface of the targetcomputer program captured during actual use of the target computerprogram, and the data further including associations between the stringsand images of the graphical user interface of the target computerprogram captured during the actual use of the target computer program,in which the accessing of the context data is further performed toretrieve content associated with a string that matches the selectedtext; generating output data, using at least the message data, andincluding the retrieved content in association with the selected text,for presentation on a presentation device; receiving an input withrespect to a selected message in the message data; and updating data forthe selected message in the message data based on the input.
 14. Thecomputer-implemented process of claim 13, wherein the generated outputdata includes display data comprising an editing pane displaying theselected text corresponding to the message in the message data and animage pane displaying images retrieved from the context data.
 15. Thecomputer-implemented process of claim 14, further comprising displayinga plurality of retrieved images sequentially in the image pane.
 16. Thecomputer-implemented process of claim 13, wherein the output datafurther includes an indication of confidence of a match between theselected text and the string corresponding to the retrieved content. 17.The computer-implemented process of claim 13, wherein the context datafurther includes, for a recognized string from an image, a location ofthe string in the image, and, wherein the retrieved content comprises animage corresponding to the string that matches the selected text, andwherein, when the image is displayed, the output data further includes ahighlight of the string in the image.